Ext.namespace('pages.p2p.grtzzq.query');

pages.p2p.grtzzq.query.Main = function(config) {
	Ext.apply(this, config);
	this.initUIComponents();
	pages.p2p.grtzzq.query.Main.superclass.constructor.call(this);
};

Ext.extend(pages.p2p.grtzzq.query.Main, Ext.Panel, {
	/**
	 * 构造函数
	 */
	initUIComponents : function() {

		this.queryForm = new Ext.form.FormPanel({
					layout : 'column',
					region : 'north',
					labelWidth : 100,
					labelAlign : 'right',
					autoHeight : true,
					border : false,
					frame : false,
					items : [{
								columnWidth : 1,
								height : 10,
								border : false
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '投资开始时间',
											name : 'START_DATE',
											id : 'START_DATE',
											anchor : '96%',
											format : 'Y-m-d',
											xtype : 'datefield'
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '投资结束时间',
											name : 'END_DATE',
											id : 'END_DATE',
											anchor : '96%',
											format : 'Y-m-d',
											xtype : 'datefield'
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '用户名',
											name : 'USERID',
											id : 'USERID',
											anchor : '96%',
											xtype : 'textfield'
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '手机号码',
											name : 'SJHM',
											id : 'SJHM',
											anchor : '96%',
											xtype : 'textfield'
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '项目名称',
											name : 'XMMC',
											id : 'XMMC',
											anchor : '96%',
											xtype : 'textfield'
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '推荐人(员工号)',
											name : 'TJR',
											id : 'TJR',
											anchor : '96%',
											xtype : 'textfield',
											regex : /^\d+$/,
											regexText : '必须填写数字'
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								items : [{
											fieldLabel : '合同编号',
											name : 'HTBH',
											id : 'HTBH',
											anchor : '96%',
											xtype : 'textfield'
										}]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								hidden : false,
								items : [new Ext.form.ComboBox({
											fieldLabel : '投资状态',
											name : 'TCZT',
											id : 'TCZT',
											anchor : '96%',
											store : new Ext.data.SimpleStore({
														fields : ['VALUE',
																'TEXT'],
														data : [['00', '成功'],
																['01', '待审核'],
																['02', '失败'],
																['03', '转让成功'],
																['', '全部']]
													}),
											valueField : 'VALUE',
											displayField : 'TEXT',
											hiddenName : 'STATE_VALUE',
											triggerAction : 'all',
											mode : 'local',
											editable : false,
											selectOnFocus : true,
											value : ''
										})]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								hidden : false,
								items : [new Ext.form.ComboBox({
											fieldLabel : '还款状态',
											name : 'HKZT',
											id : 'HKZT',
											anchor : '96%',
											store : new Ext.data.SimpleStore({
														fields : ['VALUE',
																'TEXT'],
														data : [['0', '没到计息期'],
																['1', '到计息期'],
																['3', '还款到账'],
																['', '全部']]
													}),
											valueField : 'VALUE',
											displayField : 'TEXT',
											hiddenName : 'STATE_VALUE',
											triggerAction : 'all',
											mode : 'local',
											editable : false,
											selectOnFocus : true,
											value : ''
										})]
							}, {
								columnWidth : .25,
								layout : 'form',
								border : false,
								hidden : true,
								items : [new Ext.form.ComboBox({
											fieldLabel : '投资渠道',
											name : 'TZ_SOURCE',
											id : 'TZ_SOURCE',
											anchor : '96%',
											store : new Ext.data.SimpleStore({
														fields : ['VALUE',
																'TEXT'],
														data : [
																['00', '账户余额'],
																['01', 'POS单号'],
																['', '全部']]
													}),
											valueField : 'VALUE',
											displayField : 'TEXT',
											hiddenName : 'TZ_SOURCE_VALUE',
											triggerAction : 'all',
											mode : 'local',
											editable : false,
											selectOnFocus : true,
											value : ''
										})]
							}/*
								 * ,{ columnWidth : .25, layout : 'form', border :
								 * false, items : [ { fieldLabel : 'OA员工地区',
								 * name : 'Q_DQ', id : 'Q_DQ', anchor : '96%',
								 * xtype : 'textfield' }] },{ columnWidth : .25,
								 * layout : 'form', border : false, items : [ {
								 * fieldLabel : 'OA员工部门', name : 'Q_BM', id :
								 * 'Q_BM', anchor : '96%', xtype : 'textfield' }]
								 * },{ columnWidth : .25, layout : 'form',
								 * border : false, items : [ { fieldLabel :
								 * 'OA员工所属', name : 'Q_SS', id : 'Q_SS', anchor :
								 * '96%', xtype : 'textfield' }] }
								 */]
				});
		this.store = new Ext.data.Store({
					proxy : new Ext.data.HttpProxy({
								url : ExtJ
										.getActionPath('/grtzzq/queryGrtzzq.do'),
								timeout : 90000
							}),
					remoteSort : true,
					reader : new Ext.data.JsonReader({
								root : 'data',
								totalProperty : 'total',
								sumJe : 'sumJe',
								id : 'ID'
							}, [{
										name : 'USERID',
										mapping : 'USERID'
									}, {
										name : 'SJHM',
										mapping : 'SJHM'
									}, {
										name : 'ZQID',
										mapping : 'ZQID'
									}, {
										name : 'TCJE',
										mapping : 'TCJE'
									}, {
										name : 'TZSJ',
										mapping : 'TZSJ'
									}, {
										name : 'TCZT',
										mapping : 'TCZT'
									}, {
										name : 'HKZT',
										mapping : 'HKZT'
									}, {
										name : 'HKRQ',
										mapping : 'HKRQ'
									}, {
										name : 'TZSY',
										mapping : 'TZSY'
									}, {
										name : 'TZ_SOURCE',
										mapping : 'TZ_SOURCE'
									}, {
										name : 'POS_CODE',
										mapping : 'POS_CODE'
									}, {
										name : 'XMMC',
										mapping : 'XMMC'
									}, {
										name : 'IS_JX',
										mapping : 'IS_JX'
									}, {
										name : 'XM_TYPE',
										mapping : 'XM_TYPE'
									}, {
										name : 'HK_TYPE',
										mapping : 'HK_TYPE'
									}, {
										name : 'QX',
										mapping : 'QX'
									}, {
										name : 'QX_MONTH',
										mapping : 'QX_MONTH'
									}, {
										name : 'TJR',
										mapping : 'TJR'
									}, {
										name : 'HTBH',
										mapping : 'HTBH'
									}, {
										name : 'OA_GYH',
										mapping : 'OA_GYH'
									}, {
										name : 'DQ',
										mapping : 'DQ'
									}, {
										name : 'BM',
										mapping : 'BM'
									}, {
										name : 'SS',
										mapping : 'SS'
									}, {
										name : 'ZW',
										mapping : 'ZW'
									}, {
										name : 'ZJ',
										mapping : 'ZJ'
									}, {
										name : 'OA_XM',
										mapping : 'OA_XM'
									}, {
										name : 'OA_SJHM',
										mapping : 'OA_SJHM'
									}, {
										name : 'SJSYL',
										mapping : 'SJSYL'
									}, {
										name : 'SJSYL_SHOW',
										mapping : 'SJSYL_SHOW'
									}, {
										name : 'JXRQ',
										mapping : 'JXRQ'
									}, {
										name : 'KHDJ',
										mapping : 'KHDJ'
									}])
				});

		this.eug_gs = new Ext.ux.grid.GridSummary();

		var sm = new Ext.grid.CheckboxSelectionModel({
					singleSelect : true
				});
		var cm = new Ext.grid.ColumnModel([sm, new Ext.grid.RowNumberer(), {
			header : '用户名',
			width : 80,
			sortable : true,
			dataIndex : 'USERID',
			summaryRenderer : function(val) {
				return '<span style="color:#00000;font-weight:bold;font-size:18px;">'
						+ '合计 :</span>';
			}.createDelegate(this)
		}, {
			header : '手机号码',
			width : 100,
			sortable : true,
			dataIndex : 'SJHM',
			summaryRenderer : function(val) {
				if (null == this.store.reader.jsonData
						|| undefined == this.store.reader.jsonData) {
					return "";
				}
				var total = this.store.reader.jsonData.total;
				return '<span style="color:#FF0000;font-weight:bold;font-size:18px;">'
						+ total + '条</span>';
			}.createDelegate(this)
		}, {
			header : '项目ID',
			width : 50,
			sortable : true,
			dataIndex : 'ZQID'
		}, {
			header : '项目名称',
			width : 280,
			sortable : true,
			dataIndex : 'XMMC'
		}, {
			header : '年化率(%)',
			width : 100,
			sortable : true,
			dataIndex : 'SJSYL'
		}, {
			header : '投资金额',
			width : 150,
			sortable : true,
			dataIndex : 'TCJE',
			summaryRenderer : function(val){  
				if(null == this.store.reader.jsonData || undefined == this.store.reader.jsonData){
					return "";
				}
			   var sumJe = this.store.reader.jsonData.sumJe;
		       return '<span style="color:#FF0000;font-weight:bold;font-size:18px;">'  + sumJe + '￥</span>';  
		   }.createDelegate(this)
		}, {
			header : '投资时间',
			width : 140,
			sortable : true,
			dataIndex : 'TZSJ'
		}, {
			header : '投资状态',
			width : 60,
			sortable : true,
			dataIndex : 'TCZT'
		}, {
			header : '还款状态',
			width : 80,
			sortable : true,
			dataIndex : 'HKZT',
			renderer : this.renderState.createDelegate(this)
		}, {
			header : '回款日期',
			width : 140,
			sortable : true,
			dataIndex : 'HKRQ'
		}, {
			header : '合同编号',
			width : 180,
			sortable : true,
			dataIndex : 'HTBH'
		}, {
			header : '投资收益',
			width : 80,
			sortable : true,
			dataIndex : 'TZSY'
		}, {
			header : '项目类型',
			width : 80,
			sortable : true,
			dataIndex : 'XM_TYPE',
			renderer : function(value) {
				if ("01" == value) {
					return "债权转让";
				} else if ("02" == value) {
					return "散标投资";
				} else {
					return value;
				}
			}
		}, {
			header : '还款类型',
			width : 150,
			sortable : true,
			dataIndex : 'HK_TYPE',
			renderer : function(value) {
				if ("01" == value) {
					return "到期本息还款";
				} else if ("02" == value) {
					return "月付收益，到期还本";
				} else {
					return value;
				}
			}
		}, {
			header : '期限(天)',
			width : 75,
			sortable : true,
			dataIndex : 'QX'
		}, {
			header : '期限(月)',
			width : 80,
			sortable : true,
			dataIndex : 'QX_MONTH',
			renderer : function(value) {
				if ("01" == value) {
					return "一个月";
				} else if ("02" == value) {
					return "两个月";
				} else if ("03" == value) {
					return "三个月";
				} else if ("04" == value) {
					return "四个月";
				} else if ("05" == value) {
					return "五个月";
				} else if ("06" == value) {
					return "六个月";
				} else if ("07" == value) {
					return "七个月";
				} else if ("08" == value) {
					return "八个月";
				} else if ("09" == value) {
					return "九个月";
				} else if ("10" == value) {
					return "十个月";
				} else if ("11" == value) {
					return "十一个月";
				} else if ("12" == value) {
					return "一年";
				} else if ("18" == value) {
					return "一年半";
				} else if ("24" == value) {
					return "两年";
				} else {
					return value;
				}
			}
		}, {
			header : '散标类预计计息日期',
			width : 120,
			sortable : true,
			dataIndex : 'JXRQ',
			renderer : function(value, cellmeta, record, rowIndex, columnIndex,
					store) {
				if ("02" == record.get("XM_TYPE")) {// 散标类显示，其他隐藏
					return value;
				} else {
					return "";
				}
			}
		}, {
			header : '推荐人(员工号)',
			width : 120,
			sortable : true,
			dataIndex : 'TJR'
		}, {
			header : '推荐级别',
			width : 100,
			sortable : true,
			dataIndex : 'KHDJ',
			renderer : function(value) {
				if ("1" == value) {
					return "一级";
				} else if ("2" == value) {
					return "二级";
				} else if ("3" == value) {
					return "三级";
				}
			}
		}, {
			header : 'OA员工号码',
			width : 100,
			sortable : true,
			hidden : true,
			dataIndex : 'OA_GYH'
		}, {
			header : 'OA员工地区',
			width : 100,
			sortable : true,
			dataIndex : 'DQ'
		}, {
			header : 'OA员工部门',
			width : 100,
			sortable : true,
			dataIndex : 'BM'
		}, {
			header : 'OA员工所属',
			width : 100,
			sortable : true,
			dataIndex : 'SS'
		}, {
			header : 'OA员工职务',
			width : 100,
			sortable : true,
			dataIndex : 'ZW'
		}, {
			header : 'OA员工职级',
			width : 100,
			sortable : true,
			dataIndex : 'ZJ'
		}, {
			header : 'OA姓名',
			width : 100,
			sortable : true,
			dataIndex : 'OA_XM'
		}, {
			header : 'OA员工手机号码',
			width : 100,
			sortable : true,
			dataIndex : 'OA_SJHM'
		}/*
			 * ,{ header : '投资来源', width : 80, sortable : true, dataIndex :
			 * 'TZ_SOURCE', renderer : function(value){ if("00"==value){ return
			 * "账户余额"; }else if("01"==value){ return "POS单号"; }else{ return
			 * value; } } },{ header : 'POS单号', width : 80, sortable : true,
			 * dataIndex : 'POS_CODE' }
			 */]);

		/**
		 * GridPanel
		 */
		this.grid = new Ext.grid.GridPanel({
					id : 'grid',
					region : 'center',
					store : this.store,
					border : true,
					frame : false,
					plugins : this.eug_gs,
					viewConfig : {
						autoFill : false,
						forceFit : false,
						focusRow : function() {
							return;
						},
						getRowClass : function(record, rowIndex, rowParams,
								store) {
							if (record.get("TOP_LEVEL") == "1") {
								return 'ux-grid-record-onTop';
							}
						}
					},
					sm : sm,
					cm : cm,
					tbar : [{
								id : 'query',
								iconCls : 'query',
								text : '查询',
								handler : this.onQuery.createDelegate(this)
							}, '-', {
								id : 'reset',
								iconCls : 'reset',
								text : '重置',
								handler : this.onReset.createDelegate(this)
							}, '-', {
								id : 'export',
								iconCls : 'excel',
								text : '下载Excel',
								handler : this.onExport.createDelegate(this)
							}],
					bbar : new Ext.PagingToolbar({
								pageSize : pageSize,
								store : this.store,
								displayInfo : true,
								displayMsg : '当前显示第 {0} - {1} 条 / 共 {2} 条',
								emptyMsg : "没有记录"
							})
				});

		Ext.apply(this, {
					title : '个人投资债权信息查询',
					closeAction : 'close',
					layout : 'border',
					border : false,
					tools : [{
						id : 'help',
						handler : function(){
							this.onHelp();				
						}.createDelegate(this)
					}],
					listeners : {
						'render' : this.initData.createDelegate(this)
					},
					items : [this.queryForm, this.grid]
				})
	},
	initData : function() {
		this.onQuery();
	},
	
	onHelp : function(){
		var dialog = new global.help.HelpWindow({key : 'cw.all.helpGrtzzq'});
		dialog.show();
	},
	
	
	onQuery : function() {
		this.store.baseParams.startDate = Ext.getCmp('START_DATE').getRawValue();
		this.store.baseParams.endDate = Ext.getCmp('END_DATE').getRawValue();
		this.store.baseParams.USERID = Ext.getCmp('USERID').getRawValue();
		this.store.baseParams.SJHM = Ext.getCmp('SJHM').getRawValue();
		this.store.baseParams.TCZT = Ext.getCmp('TCZT').getValue();
		this.store.baseParams.HKZT = Ext.getCmp('HKZT').getValue();
		this.store.baseParams.TZ_SOURCE = Ext.getCmp('TZ_SOURCE').getValue();
		this.store.baseParams.XMMC = Ext.getCmp('XMMC').getRawValue();
		this.store.baseParams.TJR = Ext.getCmp('TJR').getRawValue();
		this.store.baseParams.HTBH = Ext.getCmp('HTBH').getRawValue();
		
		var startDate = this.store.baseParams.startDate;
		var endDate = this.store.baseParams.endDate;
		if (startDate != '' && endDate != '') {
			if (startDate > endDate) {
				Ext.Msg.alert('提示', '开始时间不能大于结束时间!');
				return;
			}
			var kssj = new Date(startDate);
			var jssj = new Date(endDate);
			var sjc_d = jssj.getTime() - kssj.getTime();
			var day = Math.floor(sjc_d / (24 * 3600 * 1000));
			if (day > 30) {
				Ext.Msg.alert('提示', '开始时间与结束时间之间不能大于30天!');
				return;
			}
		} else if (startDate == '' && endDate == '') {
			var username = this.store.baseParams.USERID;
			var sjhm = this.store.baseParams.SJHM;
			var xmmc = this.store.baseParams.XMMC;
			var tjr = this.store.baseParams.TJR ;
			var htbh = this.store.baseParams.HTBH;
			/*var tczt = this.store.baseParams.TCZT;
			var hkzt = this.store.baseParams.HKZT;*/
			console.info(sjhm);
			if (!Ext.isEmpty(username)||!Ext.isEmpty(sjhm)||!Ext.isEmpty(xmmc)||!Ext.isEmpty(tjr)||!Ext.isEmpty(htbh)) {
				this.store.baseParams.startDate = null;
				this.store.baseParams.endDate = null;
			} else {
				var now = new Date().format('Y-m-d');
				var sDate = new Date();
				sDate.setDate(sDate.getDate() - 0);
				this.store.baseParams.startDate = sDate.format('Y-m-d');
				this.store.baseParams.endDate = now;
				Ext.getCmp('START_DATE').setValue(this.store.baseParams.startDate);
				Ext.getCmp('END_DATE').setValue(this.store.baseParams.endDate);
			}
		}else if (startDate == '' && endDate != '') {
			Ext.Msg.alert('提示', '请输入开始时间!');
			return;
		}else if (startDate != '' && endDate == '') {
			Ext.Msg.alert('提示', '请输入结束时间!');
			return;
		}
		// 权限分离 开始
		var TJR = this.store.baseParams.TJR;
		var re = /^\d+$/;
		if (!Ext.isEmpty(TJR) && !re.test(TJR)) {
			Ext.Msg.alert('提示', '推荐人(员工)必须填写数字');
			return;
		}
		this.store.baseParams.TJR = this.onQxfl(TJR, roleParam, '推荐人(员工号)');
		if ('false' == this.store.baseParams.TJR) {
			return;
		}
		// 权限分离 结束
		Ext.getBody().mask("正在查询,请稍候...");
		var count = this.store.getCount();
		if (count > 0) {
			this.grid.getStore().removeAll();
			this.store.reader.jsonData.sumJe = 0;
			this.eug_gs.refreshSummary();
		}
		this.store.reload({
					params : {
						start : 0,
						limit : pageSize
					},
					timeout : 90000,
					callback : function(r, options, success) {
						Ext.getBody().unmask(true);
					}
				});
	},

	onReset : function() {
		this.queryForm.getForm().reset();
	},

	onView : function() {
		var record = this.grid.getSelectionModel().getSelected();
		if (!record) {
			ExtJ.showMessage("请选择一条需要查看的记录!");
			return;
		}
		var win = new pages.attachment.attMgmt.AttrMgmt({
					operType : 'view',
					record : record
				});
		win.show();
	},

	onDelete : function() {
		var record = this.grid.getSelectionModel().getSelected();
		if (!record) {
			ExtJ.showMessage("请选择一条需要查看的记录!");
			return;
		}
		var bizId = record.get("ID");
		Ext.Msg.confirm("确认", "你确定要删除信息吗?", function(fn) {
					if (fn == 'yes') {
						Ext.getBody().mask("正在处理,请稍候...");
						Ext.Ajax.request({
									url : ExtJ
											.getActionPath("/tx/deleteAtt.do"),
									params : {
										bizId : bizId
									},
									callback : function(options, suc, response) {
										if (suc) {
											var text = Ext
													.decode(response.responseText);
											Ext.getCmp('grid').getStore()
													.reload();
											Ext.getBody().unmask(true);
										}
									}.createDelegate(this)
								});
					}
				}.createDelegate(this));
	},

	onExport : function() {
		var TZSJ_START = Ext.getCmp('START_DATE').getRawValue();
		var TZSJ_END = Ext.getCmp('END_DATE').getRawValue();
		var USERID = Ext.getCmp('USERID').getRawValue();
		var SJHM = Ext.getCmp('SJHM').getValue();
		var TCZT = Ext.getCmp('TCZT').getValue();
		var HKZT = Ext.getCmp('HKZT').getValue();
		var TZ_SOURCE = Ext.getCmp('TZ_SOURCE').getValue();
		var XMMC = Ext.getCmp('XMMC').getValue();
		var TJR = Ext.getCmp('TJR').getValue();
		var HTBH = Ext.getCmp('HTBH').getValue();
		// 权限分离 开始
		var re = /^\d+$/;
		if (!Ext.isEmpty(TJR) && !re.test(TJR)) {
			Ext.Msg.alert('提示', '推荐人(员工)必须填写数字');
			return;
		}
		TJR = this.onQxfl(TJR, roleParam, '推荐人(员工号)');
		if ('false' == TJR) {
			return;
		}
		// 权限分离 结束
		ExtJ.doExport({
					url : baseUrl + "/grtzzq/exportTzrxxExcelMethod.do",
					params : {
						TZSJ_START : TZSJ_START,
						TZSJ_END : TZSJ_END,
						USERID : USERID,
						SJHM : SJHM,
						TCZT : TCZT,
						HKZT : HKZT,
						TZ_SOURCE : TZ_SOURCE,
						XMMC : XMMC,
						TJR : TJR,
						HTBH : HTBH
					}
				});
	},
	renderState : function(value, cellmeta, record, rowIndex, columnIndex,
			store) {
		if (value == '0') {
			/*
			 * if(record.get("IS_JX") > 0){ return "到计息期"; }else{ return
			 * '没到计息期'; }
			 */return '没到计息期';
		} else if (value == '1') {
			return '到计息期';
		} else if (value == '2') {
			return '到期还款';
		} else if (value == '3') {
			return '还款已到账';
		}
	},
	onQxfl : function(ygh, qx, msg) {
		function isEmptyE(param) {
			if (Ext.isEmpty(param)) {
				return true;
			} else if ('null' == param) {
				return true;
			} else if (undefined == param) {
				return true;
			} else if ('undefined' == param) {
				return true;
			} else if ('' == param) {
				return true;
			} else {
				return false;
			}
		}
		if (isEmptyE(qx) && isEmptyE(ygh)) {
			return "";
		} else if (isEmptyE(qx) && !isEmptyE(ygh)) {
			return ygh;
		} else if (!isEmptyE(qx) && isEmptyE(ygh)) {
			return qx;
		} else {
			var qxs = qx.split(",");
			for (var i = 0; i < qxs.length; i++) {
				var param = qxs[i];
				var param_l = param.toString().length;
				if (ygh.toString().length >= param_l
						&& param == ygh.toString().substring(0, param_l)) {
					return ygh;
				}
			}
			Ext.Msg.alert('提示', '权限不足,' + msg + '必须是' + qxs.join("或") + '开头');
			return 'false';
		}
	}
});